package com.mis.database;

import java.util.ArrayList;
import java.util.List;


import com.mis.horario.Materia;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class DBAdapter {
		
	 private Context context;
     private SQLiteDatabase database;
     private DataBaseHelper dbHelper;
     
     
     /**
      * Constructor de mi Clase DBAdapter
      * @param context
      */
     public DBAdapter(Context context) {
    	 	
    	 	/*
    	 	 * Guardo el contexto de mi Apliación
    	 	 */
             this.context = context;
     }

     /**
      * Función para abrir la conexión a mi Base de Datos
      * @throws SQLException
      */
     
     public void open() throws SQLException {
             dbHelper = new DataBaseHelper(context);
             database = dbHelper.getWritableDatabase();
     }

     /**
      * Función para Cerrar la conexión a mi BD
      */
     
     public void close() {
             dbHelper.close();
     }
     
     /***
      * Regresa la información de las Materias
      * @return List<Materia> Listado de objetos de las Materias
      */
     public List<Materia> selectMaterias() {          
         
    	 // Generalmente abro y cierro la conexión al BD, algunos ejemplos solo lo abren en una ocasión,
    	 open();
    	 
    	 /*
    	  * Abro un cursor que me va a recorrer lo obtenido de un SELECT a la tabla "Materia"
    	  * de este SELECT obtendré los campos "idMateria", "nombre", "profesor"
    	  * y ordenaré la consulta por el "nombre" de la Materia
    	  */
    	 //, "horario"
         Cursor cursor = database.query("Materia", new String[] {"idMateria", "nombre", "profesor"}, null, null, null, null, "nombre");
         List<Materia> materias = new ArrayList<Materia>();
         
         // Recorremos el cursor
         cursor.moveToFirst();
             while (cursor.isAfterLast() == false) {
            	 
            	 /*
            	  * Por cada registro que el cursor lea, se agregará un objeto de tipo Materia a nuestro
            	  * Arreglo de Materias. Los parámetros que se envían son los definidos en el Constructor de nuestra Clase Materia
            	  * Nota: "Tener en cuenta el tipo de dato que se envía"
            	  */
            	 materias.add(new Materia(
            			 cursor.getLong(cursor.getColumnIndexOrThrow("idMateria")), 
            			 cursor.getString(cursor.getColumnIndexOrThrow("nombre")),
            			 cursor.getString(cursor.getColumnIndexOrThrow("profesor"))
            			 //cursor.getString(cursor.getColumnIndexOrThrow("horario"))
                         ));
            	 cursor.moveToNext();
             }
             
             // Cerramos el cursor
             if (cursor != null && !cursor.isClosed())  cursor.close();
             // Cerramos la Conexión a la Base de Datos
             close();
             // Regresamos nuestro Listado de Materias
             return materias;            
     }  
	
}
